const { Sequelize, DataTypes } = require('sequelize')
// const sqlite3 = require('sqlite3')
const fs = require("fs")
const path = require("path")

// var dbpath = new sqlite3.Database(path.join(__dirname, "./sqlite.db"))

// 创建数据库
const sequelize = new Sequelize({
    dialect: 'sqlite',// 数据库指定类型
    storage: "./database/sqlite.db" // 数据库存储位置
})

// 创建数据表
const Account = sequelize.define('Account', {
    // 账户
    account: DataTypes.STRING,
    // 名称
    username: DataTypes.STRING,
    // 密码
    password: DataTypes.STRING
})

// 用户信息
const UserInfo = sequelize.define('UserInfo', {
    // 账户
    account: DataTypes.STRING,
    // 昵称
    nickname: DataTypes.STRING,
    // 头像
    avatar: DataTypes.STRING,
    // 手机号
    mobile: DataTypes.STRING,
    // 邮箱号
    email: DataTypes.STRING,
    // 用户类型 0 : 普通用户, 1 : 开发者, 2 : 管理员
    userType: DataTypes.INTEGER
})

var dbInit = async function () {
    var dbpath = path.join(__dirname, "./sqlite.db")
    var result = await fs.existsSync(dbpath);
    if (result == false) {
        console.log('数据库初始化 - start')
        /// 将对应的数据表添加到数据库中
        await Account.sync()
        await UserInfo.sync()
        console.log('数据库初始化 - End')
    }
    console.log('数据库检测完成!')
}

module.exports = {
    Account,
    UserInfo,
    dbInit
}


// 将数据表同步到 数据库中
// User.sync()

// 查找一条数据
// const userFind = await User.findOne({ where: { username, password } })
// 创建一条数据
// const userCreate = await User.create({ username, password })


// 增
// const add = async function () {
//   const addRes = await User.create({ username: "Jane", password: "ccc" });
//   console.log(addRes.toJSON());
// }

// 删
// const del = async function () {
//   const delRes = await User.destroy({
//     where: { id: 3 }
//   });
//   console.log(delRes);
// }

// 改
// const up = async function () {
//   const upRes = await User.update({ username: "liujie" }, {
//     where: { id: 2 }
//   });
//   console.log(upRes);
// }

// 查
// const sel = async function (res, next) {
//   const data = [];
//   const selRes = await test.findAll(); // 查询全部
//   // const selRes = await test.findAll({ attributes: ['name'] }); // 查询特定属性
//   // const selRes = await test.findAll({ attributes: { exclude: ['name'] } }); // 排除特定属性
//   // const selRes = await test.findAll({
//   //   attributes: { exclude: ['name'] },
//   //   where: {
//   //     // id: 2 // id = 2
//   //     id: {
//   //       [Op.eq]: 2
//   //     }, // id = 2
//   //     mobile: null
//   //   }
//   // }); // where 子句

//   Array.from(selRes).forEach(ele => {
//     console.log(ele.toJSON());
//     data.push(ele.toJSON());
//   })
//   res.json(data);
// }
